前幾篇文章都是以只有一位使用者的角度去操作資料庫,基本不會有併發的問題,除非那位使用者無聊到開了多台電腦連線到伺服器,那就另當別論了,回到正題,現實情況不太可能只有一位使用者去存取資料庫,通常系統會區分權限,舉例來說,一個電商網站可以照權限區分成一個管理者、多個管理員、許多個會員,如果有兩個以上的會員同時存取同筆資料,就可能發生併發,以下會簡介四個併發問題,以及為了解決併發所提出的四個隔離層級。
1.髒讀Dirty Reads
2.更新丟失Lost Updates
3.幻讀Phantom Reads
4.不可重複讀Non-repeating Reads
1.可讀取未提交Read Uncommitted
2.只可讀取已提交Read Committed
3.可重複讀取Repeatable Read
4.序列化Serializable
併發牽扯的知識點較多,所以會分成多篇文章來寫,原則上還是希望能搭配圖片、簡單的demo來寫,不然就跟教科書沒兩樣了,題外話,以前自己研究作業系統時,總以為像是死鎖這類的問題只會出現在面試跟課本裡面,後來跟一位有多年工作經驗的工程師閒聊時,才發現這些問題,在秒殺活動的電商網站中是經常碰到的,一個書到用時方恨少的概念?
Day14-MySQL的併發(Concurrency)-髒讀、更新丟失、幻讀、不可重複讀(2)